package com.lw.structural.flyweight;

import java.util.HashMap;
//运用共享技术有效地支持大量细粒度的对象。
public class ShapeFactory {
   /**
    * 应用
    * 1、JAVA 中的 String，如果有则返回，如果没有则创建一个字符串保存在字符串缓存池里面。
    * 2、数据库的数据池。
    * 使用场景： 1、系统有大量相似对象。 2、需要缓冲池的场景。
    */
   private static final HashMap<String, Shape> circleMap = new HashMap<>();
 
   public static Shape getCircle(String color) {
      Circle circle = (Circle)circleMap.get(color);//有就获取
 
      if(circle == null) {//没有就创建一个并放入map中
         circle = new Circle(color);
         circleMap.put(color, circle);
         System.out.println("Creating circle of color : " + color);
      }
      return circle;//最后返回获取的方法
   }
}